11995
6294
Eu tenho um nome de estatísticas de array como
maçã
X
banana
Y
kiwi
z
Preciso colocar maçã, banana e Kiwi em uma matriz Frutas e X, Y e Z em uma matriz chamada alfabetos.
Qualquer mecanismo simples de C # para isso, por favor? 
Use o IEnumerable . Onde a sobrecarga que fornece o índice.
var frutas = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alfabetos = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Roubado de How to get Alternate elements using Enumerable in C #
var frutas = meuArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alfabetos = meuArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Se eu entendi que você questiona corretamente o que quer é muito simples:
Você deseja colocar frutas em uma matriz de frutas e o mesmo para alfabetos e elas aparecem alternativamente na matriz statsname, então:
para (int i = 0, j = 0; i  list = new List  () {"apple", "X", "banana", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Select (x => x.Select (v => v.l) .ToList ())
.Listar();
Então você tem uma lista de listas:
|
list  fruits = new List  ();
list  alphabet = new List  ();
para (int i = 0; i  everyOther  (coleção IEnumerable )
{
usando (var e = coleção.GetEnumerator ()) {
while (e.MoveNext ()) {
rendimento retorno e.Current;
e.MoveNext (); // pula um
}
}
}
Você pode usar System.Linq.Skip para pular o primeiro elemento.
string [] palavras = "maçã X banana Y Kiwi z" .Split ();
var frutas = todosOutros (palavras);
var alfabetos = todosOutros (palavras.Skip (1));
Basta usá-los como uma nova coleção ou chamar .ToArray () ou .ToList () neles:
foreach (string f em frutas)
Console.WriteLine (f);
string [] umArray = frutas.ToArray (); // usando System.Linq
Agora você tem o que precisa.
Iteradores são métodos que geram retorno, consulte Iteradores (Guia de programação C #). Esta é uma característica muito forte da linguagem. Você pode:
pular elementos
decorar elementos
mudar a ordem
concatenar sequências (consulte System.Linq.Concat)
...
|
Aqui está um código de trabalho, espero que seja útil para você:
using System;
using System.Collections.Generic;
using System.IO;
usando System.Linq;
using System.Text;
using System.Threading.Tasks;
espaço de nomes ReadFile
{
programa de aula
{
static void ReadFile (string filePath, List  custumerNames, List  phoneNumbers)
{
string line = string.Empty;
var fileStream = new StreamReader (filePath);
bool isPhoneNumber = true;
while ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (linha));
isPhoneNumber = false;
}
outro
{
custumerNames.Add (linha);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
static void Main (string [] args)
{
Console.WriteLine ("Começou a ler o arquivo ...");
List  custumersNamesList = new List  ();
List  custumersPhonesNumbers = new List  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Supondo que ambas as listas tenham o mesmo comprimento.
para (int i = 0; i